home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
014
/
pcpgcnv.bas
< prev
next >
Wrap
BASIC Source File
|
1985-09-21
|
16KB
|
371 lines
100 REM PCPG CONVERT PROGRAM **********************
200 KEY OFF
300 CLEAR,,1024
400 DEFINT A-Z:DIM F$(175):DIM PIC$(64):DIM T$(16)
500 DIM SCAN(7,7,2)
600 DIM MH(200,20):DIM MV(200,20)
700 WIDTH 80
800 GOSUB 34900
900 GOSUB 31600
1000 GOSUB 31000
1100 GOSUB 26200
1200 GOSUB 21700
1300 HMAX=0:HMIN=319:VMAX=0:VMIN=199:PCOL=2:SCANSIZE=95
1400 SCREEN 0,0,0:CLS:SCREEN 1,0
1500 COLOR 0,1
1600 GOSUB 17800
1700 LOCATE 1,1:PRINT"<C>ircle <S>aves?"
1800 SHAPE$=INKEY$:IF SHAPE$="" THEN 1800
1900 IF SHAPE$="C" THEN FIL$="C-"+LEFT$(TIME$,2)+MID$(TIME$,4,2)+RIGHT$(TIME$,2) +".GRF":GOSUB 25600:GOSUB 8200:GOSUB 29900:GOTO 2200
2000 IF SHAPE$="S" THEN GOTO 10000
2100 GOTO 1800
2200 SCREEN 1
2300 COLOR 0,1
2400 HORIZ=159
2500 VERT=99
2600 HUNT=0
2700 REM LOAD SCAN MATRIX ************************
2800 FOR R=1 TO 7
2900 FOR C=1 TO 7
3000 READ SCAN(R,C,1)
3100 READ SCAN(R,C,2)
3200 NEXT C
3300 NEXT R
3400 REM START SCANNING ROUTINE ******************
3500 FOR SIZE=1 TO SCANSIZE STEP 2
3600 R=VAL(MID$(DIRECTION$,SIZE,1))
3700 C=VAL(MID$(DIRECTION$,SIZE+1,1))
3800 X=SCAN(R,C,1)
3900 Y=SCAN(R,C,2)
4000 PIX=POINT(HORIZ+X,VERT+Y):PSET(HORIZ+X,VERT+Y),PCOL :IF PCOL=3 THEN HALT=1:GOTO 26800
4100 IF PIX=3 THEN LOCATE 12,2:PRINT USING "\ \";STR$(HUNT+1):HUNT=HUNT+1 :GOSUB 19700:GOSUB 20900:GOTO 4500
4200 IF HUNT=0 THEN HORIZ=HORIZ+1:GOTO 3500
4300 NEXT SIZE
4400 GOTO 5400
4500 REM PUT DATA INTO MATRIX ********************
4600 HORIZ=HORIZ+X
4700 VERT=VERT+Y
4800 IF SW=0 AND HUNT=1 THEN HSTART=HORIZ+X:SW=1:X=0:PSET(HORIZ+X,VERT+Y),3 :DIRECTION$=UP$
4900 MH(COUNT,CARRY)=X
5000 MV(COUNT,CARRY)=Y
5100 COUNT=COUNT+1
5200 IF COUNT=200 THEN COUNT=0:CARRY=CARRY+1
5300 GOTO 3500
5400 REM PRINT DATA TO FILE ***********************
5500 CLS:SCREEN 0,0,0:WIDTH 80:COLOR 0,7:LOCATE 10,36:PRINT" DATA TO DISK "
5600 HSTART=HSTART-HMIN:VSTART=99-VMIN
5700 HTOTAL=(HMAX-HMIN)+1:VTOTAL=VMAX-VMIN
5800 '
5900 HSTART$=MID$(STR$(HSTART),2,LEN(STR$(HSTART))) :VSTART$=MID$(STR$(VSTART),2,LEN(STR$(VSTART)))
6000 '
6100 VTOTAL$=MID$(STR$(VTOTAL),2,LEN(STR$(VTOTAL))) :HTOTAL$=MID$(STR$(HTOTAL),2,LEN(STR$(HTOTAL)))
6200 '
6300 VMIN$=MID$(STR$(VMIN),2,LEN(STR$(VMIN))) :HMIN$=MID$(STR$(HMIN),2,LEN(STR$(HMIN)))
6400 '
6500 '
6600 PRINT#2,CHR$(34)+CHR$(34):PRINT#2,CHR$(34);"BM+";HSTART$+","+VSTART$;
6700 IF MH(COUNT1,CARRY1)>0 THEN MHSGN$="+":ELSE MHSGN$="-"
6800 IF MV(COUNT1,CARRY1)>0 THEN MVSGN$="":ELSE MVSGN$="-"
6900 '
7000 IF PRNTCOUNT>15 THEN PRINT#2,CHR$(34):PRINT#2,CHR$(34);:FILCOUNT=FILCOUNT+1 :PRNTCOUNT=0
7100 '
7200 PRINT#2,"M"+MHSGN$+RIGHT$(STR$(MH(COUNT1,CARRY1)),1)+"," +MVSGN$+RIGHT$(STR$(MV(COUNT1,CARRY1)),1);
7300 '
7400 PRNTCOUNT=PRNTCOUNT+1:COUNT1=COUNT1+1
7500 IF COUNT1=200 THEN COUNT1=0:CARRY1=CARRY1+1
7600 IF COUNT1=COUNT+1 AND CARRY1=CARRY THEN 7800
7700 GOTO 6700
7800 FILCOUNT$=MID$(STR$(FILCOUNT+1),2,LEN(STR$(FILCOUNT+1)))
7900 PRINT#2,CHR$(34):CLOSE:OPEN FIL$ AS #2 LEN=70:FIELD #2,70 AS FIRST$ :LSET FIRST$=CHR$(34)+"D"+CHR$(34)+",0,"+HMIN$+","+VMIN$+","+"3,4,0,0," +HTOTAL$+","+VTOTAL$+","+FILCOUNT$+",9,0,0,0":PUT #2,1
8000 GOTO 18500
8100 REM SETUP CIRCLE ROUTINE **********************
8200 CIRCLE(51,147),19,1:PAINT(51,147),2,1
8300 LOCATE 16,6:PRINT"090":LOCATE 22,6:PRINT"225"
8400 LOCATE 19,2:PRINT"180":LOCATE 19,10:PRINT"360"
8500 LOCATE 20,3:PRINT CHR$(25)
8600 LOCATE 1,1:PRINT SPACE$(18):LOCATE 1,1 :INPUT"RADIUS(5 to 60)?",RADIUS
8700 INPUT" STOP POINT?",STP!:STP!=STP!*1.745329E-02
8800 INPUT" ASPECT?",ASPECT$
8900 IF ASPECT$="" OR ASPECT$="0" THEN ASPECT$="5/6"
9000 IF STP!=0 THEN STP!=3+(RADIUS*.0021819)
9100 L=LEN(ASPECT$):SLASH=INSTR(ASPECT$,"/") :ASPECT#=VAL(LEFT$(ASPECT$,SLASH-1))/VAL(RIGHT$(ASPECT$,L-SLASH))
9200 CIRCLE(170+RADIUS,99),RADIUS,3,3.14159,STP!,ASPECT#
9300 RETURN
9400 REM START SCREEN BLOAD ROUTINE **************
9500 '
9600 ' This BLOAD routine was originally written by John L. O'Boyle for his
9700 ' SHOW.BAS program. It was modified for this program but the ALGO's are
9800 ' John's and my thanks to him for putting it in Public Domain...
9900 '
10000 FALSE=0:TRUE=NOT FALSE:L=0:CLS:CODE=43
10100 KEY OFF:PRTSC$ = "N"
10200 F=7:B=0:BD=0
10300 SCREEN 0:WIDTH 80
10400 COLOR 7,1,0:CLS:KEY OFF
10500 LOCATE 5,8
10600 PRINT"Which disk drive contains the SCREEN SAVES?";
10700 RICH$=INKEY$:IF LEN(RICH$)<>1 THEN 10700
10800 IF ASC(RICH$)>96 AND ASC(RICH$)<103 THEN RICH$=CHR$(ASC(RICH$)-32)
10900 IF INSTR("ABCDEF",RICH$)<1 THEN BEEP:GOTO 10500
11000 DRIV$=LEFT$(RICH$,1)+":"
11100 LOCATE 5,8
11200 PRINT "Do you want a Printout of the SCREEN? "
11300 LOCATE 7,28:PRINT "Enter Y or N "
11400 ZZZ$=INKEY$:IF LEN(ZZZ$)<>1 THEN 11400
11500 IF INSTR("YyNn",ZZZ$)<1 THEN BEEP:GOTO 11400
11600 IF ZZZ$ = "Y" OR ZZZ$ = "y" THEN PRTSC$ = "Y"
11700 IF PRTSC$ = "N" THEN GOTO 12400
11800 LOCATE 5,8
11900 PRINT "Do you want the prints identified? "
12000 LOCATE 7,28:PRINT "Enter Y or N "
12100 ZYZ$=INKEY$:IF LEN(ZYZ$)<>1 THEN 12100
12200 IF INSTR("YyNn",ZYZ$)<1 THEN BEEP:GOTO 11400
12300 IF ZYZ$ = "Y" OR ZYZ$ = "y" THEN LABL$ = "Y"
12400 GOTO 15300
12500 WIDTH 80:CLS
12600 FILES DRIV$+"*.CNV"
12700 CLINE1 = CSRLIN
12800 D=0
12900 LOCATE 1,1,1
13000 FOR I = 2 TO CLINE1
13100 FOR B = 1 TO 72 STEP 18
13200 D=D+1
13300 FOR N = 0 TO 11
13400 T = SCREEN(I,(B+N)):F$(D)=F$(D)+CHR$(T)
13500 NEXT N
13600 IF LEFT$(F$(D),1)=" " THEN D=D-1 :GOTO 14000
13700 F$(D)= DRIV$+F$(D)
13800 NEXT B
13900 NEXT I
14000 LAST = D
14100 FOR X=1 TO D-1:FOR Y=X+1 TO D:IF F$(Y)<F$(X) THEN SWAP F$(X),F$(Y)
14200 NEXT Y:NEXT X
14300 SCREEN 1,0
14400 FOR XX = 1 TO LAST
14500 COLOR 0,1
14600 BLOAD F$(XX)
14700 IF PRTSC$ = "Y" THEN GOSUB 16600
14800 GOSUB 16000
14900 IF RICH$=CHR$(13) THEN 2400
15000 CLS
15100 NEXT XX
15200 END
15300 CLS:LOCATE 5,12:PRINT "Use RETURN key to start data compilation."
15400 LOCATE 7,12:PRINT "Use Grey Minus Key `-' to move backward."
15500 LOCATE 9,12:PRINT "Use Grey Plus key `+' to move forward."
15600 LOCATE 19,12:PRINT "Press Space Bar to begin BLOAD"
15700 SP$=INKEY$:IF LEN(SP$)<>1 THEN 15700
15800 IF SP$ <> " " THEN 15700
15900 GOTO 12500
16000 LOCATE 1,1:PRINT"(ENTER) begins SCAN":GOSUB 18000:LOCATE 12,14 :PRINT CHR$(26)
16100 RICH$=INKEY$:IF LEN(RICH$)<>1 THEN 16100
16200 IF RICH$=CHR$(13) THEN LF=LEN(F$(XX)):FIL$=LEFT$(F$(XX),LF-4)+".GRF" :GOSUB 25600:GOSUB 29900:RETURN
16300 IF RICH$ = "+" THEN RETURN
16400 IF RICH$ = "-" THEN XX=XX-2:GOSUB 17600:RETURN
16500 GOTO 16100
16600 SLN = SLN+1
16700 PRTSC(0) = &H5CD
16800 PRTSC(1) = &HCB
16900 P = VARPTR(PRTSC(0))
17000 CALL P
17100 FOR LIN = 1 TO 8:LPRINT " ":NEXT LIN
17200 FX$=RIGHT$(F$(XX),12)
17300 IF LABL$ = "Y" THEN LPRINT " Slide Number ";SLN ;" File name - ";FX$
17400 LPRINT CHR$(12)
17500 RETURN
17600 IF XX =-1 THEN XX=0
17700 RETURN
17800 REM PRINT TEMPLATE ROUTINE ******************
17900 LINE(159,99)-(319,99),1
18000 LINE (159,0)-(319,0),1:LINE (159,0)-(159,199),1 :LINE (159,199)-(319,199),1
18100 LINE(2,83)-(55,100),1,BF:LINE(2,83)-(55,100),2,B
18200 LINE (98,83)-(115,100),2,B
18300 RETURN
18400 REM PRINT DATA FILE TO SCREEN ***************
18500 CLOSE
18600 COLOR 7,0:CLS
18700 PRINT FIL$:PRINT:PRINT
18800 OPEN FIL$ FOR INPUT AS 1
18900 FOR FILEPRINT=1 TO 3
19000 LINE INPUT#1,A1$
19100 FOR T=1 TO LEN(A1$)
19200 PRINT MID$(A1$,T,1);
19300 NEXT T
19400 PRINT
19500 NEXT FILEPRINT
19600 END
19700 REM DETERMINE DIRECTION ROUTINE *************
19800 IF X=0 AND Y<0 THEN DIRECTION$=UP$
19900 IF X>0 AND Y<0 THEN DIRECTION$=UP$
20000 IF X>0 AND Y=0 THEN DIRECTION$=RT$
20100 IF X>0 AND Y>0 THEN DIRECTION$=RT$
20200 IF X=0 AND Y>0 THEN DIRECTION$=DN$
20300 IF X<0 AND Y>0 THEN DIRECTION$=DN$
20400 IF X<0 AND Y=0 THEN DIRECTION$=LT$
20500 IF X<0 AND Y<0 THEN DIRECTION$=LT$
20600 GOSUB 26800
20700 GOSUB 28900
20800 RETURN
20900 REM ESTABLISH VERT AND HORIZ MIN/MAX ********
21000 HX=HORIZ+X:VY=VERT+Y
21100 IF HX>HMAX THEN HMAX=HX
21200 IF HX<HMIN THEN HMIN=HX
21300 IF VY>VMAX THEN VMAX=VY
21400 IF VY<VMIN THEN VMIN=VY
21500 RETURN
21600 REM LOAD DIRECTION$ DATA ********************
21700 UP1$="3424"+"454354"
21800 UP2$="35335553"+"464264"
21900 UP3$="25233632"+"56526563"+"47417414"
22000 UP4$="262266621513373157517573"
22100 UP5$="1612272167617672"
22200 UP6$="17117771"
22300 UP$=UP1$+UP2$+UP3$+UP4$+UP5$+UP6$
22400 RT1$="4546"+"543443"
22500 RT2$="55355333"+"642442"
22600 RT3$="56366525"+"63235232"+"74144147"
22700 RT4$="662662225737751573135131"
22800 RT5$="6727761672126121"
22900 RT6$="77177111"
23000 RT$=RT1$+RT2$+RT3$+RT4$+RT5$+RT6$
23100 DN1$="5464"+"434534"
23200 DN2$="53553335"+"424624"
23300 DN3$="63655256"+"32362325"+"41471474"
23400 DN4$="737562665157313722261315"
23500 DN5$="7276616721271216"
23600 DN6$="71771117"
23700 DN$=DN1$+DN2$+DN3$+DN4$+DN5$+DN6$
23800 LT1$="4342"+"345445"
23900 LT2$="33533555"+"246446"
24000 LT3$="32522363"+"25653656"+"14744741"
24100 LT4$="315122621373157526663757"
24200 LT5$="2161127216762767"
24300 LT6$="11711777"
24400 LT$=LT1$+LT2$+LT3$+LT4$+LT5$+LT6$
24500 RETURN
24600 REM SCAN MATRIX DATA ************************
24700 DATA -3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3
24800 DATA -3,-2,-2,-2,-1,-2,0,-2,1,-2,2,-2,3,-2
24900 DATA -3,-1,-2,-1,-1,-1,0,-1,1,-1,2,-1,3,-1
25000 DATA -3,0,-2,0,-1,0,0,0,1,0,2,0,3,0
25100 DATA -3,1,-2,1,-1,1,0,1,1,1,2,1,3,1
25200 DATA -3,2,-2,2,-1,2,0,2,1,2,2,2,3,2
25300 DATA -3,3,-2,3,-1,3,0,3,1,3,2,3,3,3
25400 END
25500 REM ERROR TRAP AND FILE OPEN ****************
25600 ON ERROR GOTO 26000
25700 KILL FIL$
25800 OPEN FIL$ AS #2 LEN=70:FIELD #2,70 AS FIRST$:LSET FIRST$="XXX" :PUT #2,1:CLOSE:OPEN FIL$ FOR APPEND AS #2:PRINT #2,""
25900 RETURN
26000 IF ERR=53 THEN RESUME 25800
26100 PRINT "ERROR>";ERR;" AT LINE>";ERL:STOP
26200 REM AUTO/MANUAL MODE SELECT *****************
26300 COLOR 10,1:LOCATE 22,20:PRINT"MODE= (A)uto-select or (M)anual select?"
26400 RD$=INKEY$:IF RD$=""THEN 26400
26500 IF RD$="A" THEN DIRECTION$=RT$:RETURN
26600 IF RD$="M" THEN DIRECTION$=UP$:SELECT=1:RETURN
26700 GOTO 26400
26800 REM MANUAL DIRECTION SELECTOR ***************
26900 SELECT$=INKEY$
27000 IF SELECT$="S"THEN HALT=1
27100 IF SELECT$=CHR$(0)+"H" THEN DIRECTION$=UP$:REF$=UP$
27200 IF SELECT$=CHR$(0)+"P" THEN DIRECTION$=DN$:REF$=DN$
27300 IF SELECT$=CHR$(0)+"K" THEN DIRECTION$=LT$:REF$=LT$
27400 IF SELECT$=CHR$(0)+"M" THEN DIRECTION$=RT$:REF$=RT$
27500 IF SELECT$="S"THEN HALT=1
27600 IF SELECT$="G"THEN HALT=0:BRIDGE=0
27700 IF SELECT$="B" THEN BRIDGE=1:GOTO 28300
27800 IF SELECT$="q" THEN 5400
27900 GOSUB 28900
28000 IF SELECT=0 AND HALT=0 THEN RETURN
28100 IF HALT=0 AND REF$=DIRECTION$ THEN RETURN
28200 GOTO 26900
28300 REM BRIDGE ROUTINE **************************
28400 IF DIRECTION$=UP$ THEN DUM=1:FOR UP=1 TO 3:PSET(HORIZ+X,VERT+Y-UP+1),3 :NEXT UP
28500 IF DIRECTION$=DN$ THEN DUM=1:FOR DN=1 TO 3:PSET(HORIZ+X,VERT+Y+DN-1),3 :NEXT DN
28600 IF DIRECTION$=RT$ THEN DUM=1:FOR RT=1 TO 3:PSET(HORIZ+X+RT-1,VERT+Y),3 :NEXT RT
28700 IF DIRECTION$=LT$ THEN DUM=1:FOR LT=1 TO 3:PSET(HORIZ+X-LT+1,VERT+Y),3 :NEXT LT
28800 GOTO 26900
28900 REM ARROW ROUTINE ***************************
29000 IF DIRECTION$=UP$ THEN ARROW=24
29100 IF DIRECTION$=DN$ THEN ARROW=25
29200 IF DIRECTION$=RT$ THEN ARROW=26
29300 IF DIRECTION$=LT$ THEN ARROW=27
29400 LOCATE 12,14:PRINT CHR$(ARROW)
29500 IF HALT=1 THEN S$="S" ELSE S$=" "
29600 IF BRIDGE=1 THEN B$="B" ELSE B$=" "
29700 LOCATE 12,12:PRINT S$:LOCATE 12,16:PRINT B$
29800 RETURN
29900 REM INSTRUCTIONS BOX ************************
30000 LOCATE 1,1:PRINT SPACE$(19)
30100 LOCATE 2,1:PRINT"<CUR>=DIRECTION "
30200 PRINT" <S>=STOP "
30300 PRINT" <G>=GO "
30400 PRINT" <B>=BRIDGE "
30500 PRINT" <q>=QUIT "
30600 LINE(1,1)-(125,1):LINE(125,1)-(125,55):LINE(125,55)-(1,55)
30700 LOCATE 14,1:PRINT CHR$(34)+"M"+CHR$(34)+"count"
30800 LOCATE 14,12:PRINT "<CUR>"
30900 RETURN
31000 REM OPERATOR INSTRUCTIONS *******************
31100 LOCATE 22,23:PRINT"Do you want Instructions.... Y/N?"
31200 RD$=INKEY$:IF RD$="" THEN 31200
31300 IF RD$="Y" THEN GOTO 33300
31400 IF RD$="N" THEN RETURN
31500 GOTO 31200
31600 REM PRESENTATION SCREEN **********************
31700 SCREEN 0,1,0,0:CLS
31800 SCREEN 0,1,1,0
31900 COLOR 11,1:CLS
32000 LOCATE 2,1,0:PRINT CHR$(201);
32100 FOR PLOT=1 TO 78:PRINT CHR$(205);:NEXT PLOT:PRINT CHR$(187);
32200 FOR PLOT=1 TO 20
32300 PRINT CHR$(186)+SPACE$(78)+CHR$(186);
32400 NEXT PLOT
32500 PRINT CHR$(200);
32600 FOR PLOT=1 TO 78:PRINT CHR$(205);:NEXT PLOT:PRINT CHR$(188);
32700 LOCATE 17,30:COLOR 23,1:PRINT"* PUT CAPS KEY ON *":COLOR 15,1
32800 LOCATE 3,5:PRINT"Written by:":LOCATE 3,18:PRINT"Stephen M. Frisby" :LOCATE 4,18:PRINT"1021 College APT.2045":LOCATE 5,18 :PRINT"Texarkana, TX. 75503":LOCATE 6,18:PRINT"PH. 1-214-793-4013"
32900 LOCATE 3,58:PRINT"September 21, 1985"
33000 GOSUB 34100
33100 COLOR 7,1:SCREEN 0,1,1,1
33200 RETURN
33300 REM PRINT INSTRUCTIONS ***********************
33400 FOR LINES=0 TO 16
33500 LOCATE LINES+3,4:PRINT " "+T$(LINES)+" "
33600 NEXT LINES
33700 LOCATE 19,65:COLOR 10,0:PRINT CHR$(228)+" "+CHR$(236)+" "+CHR$(238) :COLOR 7,1
33800 LOCATE 22,23:COLOR 14,1:PRINT" Any Key to continue " :COLOR 7,1
33900 RD$=INKEY$:IF RD$="" THEN 33900
34000 RETURN
34100 REM LOGO *************************************
34200 COLOR 13,0
34300 LOCATE 12,35:PRINT CHR$(203);
34400 FOR PLOT=1 TO 7:PRINT CHR$(205);:NEXT PLOT:PRINT CHR$(203)
34500 LOCATE 13,35:PRINT CHR$(186):COLOR 10,0:LOCATE 13,36 :PRINT " "+CHR$(228)+" "+CHR$(236)+" "+CHR$(238)+" "; :COLOR 13,0:PRINT CHR$(186)
34600 LOCATE 14,35:PRINT CHR$(202);
34700 FOR PLOT=1 TO 7:PRINT CHR$(205);:NEXT PLOT:PRINT CHR$(202)
34800 RETURN
34900 REM INSTRUCTIONS TEXT ************************
35000 T$(0)="1. This program allows a user to convert a BSAVE'd graphics image "
35100 T$(1)=" to a PCPG <.GRF> file. That file can then be used with only "
35200 T$(2)=" minor changes, as a DRAW string in any MS-BASIC program. "
35300 T$(3)="2. Use PCPG to create an image. The image should be to the right "
35400 T$(4)=" of the 160 horizontal point, and the width less than 160 pix's."
35500 T$(5)=" BSAVE the file with an extension of (.CNV), e.g. `BUG.CNV'. "
35600 T$(6)="3. <A>uto allows program to make all direction change decisions. "
35700 T$(7)=" However, user input <CUR> cursor keying will override program. "
35800 T$(8)="4. <M>anual allows user to make all direction change decisions. "
35900 T$(9)="5. <C>ircle allows the choice of a simple practice routine. "
36000 T$(10)=" <S>aves loads a PCPG BSAVE'd image for graphics conversion. "
36100 T$(11)="6. <CUR>, <S>, <G>, & <q) are self explanitory. <B>ridge allows "
36200 T$(12)=" the user, once <S> has been invoked, to choose a direction and"
36300 T$(13)=" to bridge a gap or to undo a bad direction decision. The step"
36400 T$(14)=" sequence would be: <S>-<CUR>-<B>-<G>-`quick'<S>- repeat... "
36500 T$(15)="7. The mechanics of this program can be mastered with a little "
36600 T$(16)=" practice and should prove to be as fun as it is useful."
36700 RETURN
36800 REM ********************* AT LAST THE END ******************************
to be as fun as it is useful."
36700 RETURN
36800 REM ********